package com.rc.activity.dao;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import de.greenrobot.dao.AbstractDaoMaster;
import de.greenrobot.dao.identityscope.IdentityScopeType;

import com.rc.activity.dao.tbl_UserDao;
import com.rc.activity.dao.tbl_ProfileDao;
import com.rc.activity.dao.tbl_SettingsDao;
import com.rc.activity.dao.tbl_CountDao;
import com.rc.activity.dao.tbl_ReceiptDao;
import com.rc.activity.dao.tbl_TripDao;
import com.rc.activity.dao.tbl_ItemDao;
import com.rc.activity.dao.tbl_CategoryDao;
import com.rc.activity.dao.tbl_ReportDao;
import com.rc.activity.dao.tbl_MerchantDao;
import com.rc.activity.dao.tbl_TripItemsDao;

// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
/**
 * Master of DAO (schema version 3): knows all DAOs.
 */
public class DaoMaster extends AbstractDaoMaster {
	public static final int SCHEMA_VERSION = 3;

	/** Creates underlying database table using DAOs. */
	public static void createAllTables(SQLiteDatabase db, boolean ifNotExists) {
		tbl_UserDao.createTable(db, ifNotExists);
		tbl_ProfileDao.createTable(db, ifNotExists);
		tbl_SettingsDao.createTable(db, ifNotExists);
		tbl_CountDao.createTable(db, ifNotExists);
		tbl_ReceiptDao.createTable(db, ifNotExists);
		tbl_TripDao.createTable(db, ifNotExists);
		tbl_ItemDao.createTable(db, ifNotExists);
		tbl_CategoryDao.createTable(db, ifNotExists);
		tbl_ReportDao.createTable(db, ifNotExists);
		tbl_MerchantDao.createTable(db, ifNotExists);
		tbl_TripItemsDao.createTable(db, ifNotExists);
	}

	/** Drops underlying database table using DAOs. */
	public static void dropAllTables(SQLiteDatabase db, boolean ifExists) {
		tbl_UserDao.dropTable(db, ifExists);
		tbl_ProfileDao.dropTable(db, ifExists);
		tbl_SettingsDao.dropTable(db, ifExists);
		tbl_CountDao.dropTable(db, ifExists);
		tbl_ReceiptDao.dropTable(db, ifExists);
		tbl_TripDao.dropTable(db, ifExists);
		tbl_ItemDao.dropTable(db, ifExists);
		tbl_CategoryDao.dropTable(db, ifExists);
		tbl_ReportDao.dropTable(db, ifExists);
		tbl_MerchantDao.dropTable(db, ifExists);
		tbl_TripItemsDao.dropTable(db, ifExists);
	}

	public static abstract class OpenHelper extends SQLiteOpenHelper {

		public OpenHelper(Context context, String name, CursorFactory factory) {
			super(context, name, factory, SCHEMA_VERSION);
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			Log.i("greenDAO", "Creating tables for schema version "
					+ SCHEMA_VERSION);
			createAllTables(db, false);
		}
	}

	/** WARNING: Drops all table on Upgrade! Use only during development. */
	public static class DevOpenHelper extends OpenHelper {
		public DevOpenHelper(Context context, String name, CursorFactory factory) {
			super(context, name, factory);
		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			Log.i("greenDAO", "Upgrading schema from version " + oldVersion
					+ " to " + newVersion + " by dropping all tables");
			dropAllTables(db, true);
			onCreate(db);
		}
	}

	public DaoMaster(SQLiteDatabase db) {
		super(db, SCHEMA_VERSION);
		registerDaoClass(tbl_UserDao.class);
		registerDaoClass(tbl_ProfileDao.class);
		registerDaoClass(tbl_SettingsDao.class);
		registerDaoClass(tbl_CountDao.class);
		registerDaoClass(tbl_ReceiptDao.class);
		registerDaoClass(tbl_TripDao.class);
		registerDaoClass(tbl_ItemDao.class);
		registerDaoClass(tbl_CategoryDao.class);
		registerDaoClass(tbl_ReportDao.class);
		registerDaoClass(tbl_MerchantDao.class);
		registerDaoClass(tbl_TripItemsDao.class);
	}

	public DaoSession newSession() {
		return new DaoSession(db, IdentityScopeType.Session, daoConfigMap);
	}

	public DaoSession newSession(IdentityScopeType type) {
		return new DaoSession(db, type, daoConfigMap);
	}

}
